package com.tensquare.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

/**
 * Spring Cloud Config 配置中心服务器
 * 其他服务通过访问该服务进而可以从Git服务器中获取自己相对应的配置(application.yml)
 * 将每个服务的配置文件放在Git服务器(我们这里使用gitee 码云)中集中管理
 * 微服务在启动时会请求Config Server获取配置文件的内容，请求到后再启动容器
 */

/**
 * Spring Cloud Bus
 * 那我们如果想在不重启微服务的情况下更新配置如何来实现呢?
 * 我们使用SpringCloudBus来实现配置的自动更新
 * 消息总线服务端,消息总线是配合着Spring Cloud Config使用的
 * 流程:  我们将各个服务的配置放置到Git仓库中,当我们修改了Git仓库中的配置文件后,
 * 使用该配置文件的服务应该及时加载该配置文件,所以我们使用到了 消息总线
 *
 * 当我们想要服务再次立即加载它所对应的配置文件:
 * 直接Post请求: 127.0.0.1:12000(消息总线服务端地址)/actuator/bus-refresh该地址后,
 * 消息总线服务端会推送消息到RabbitMQ,消息为:"请重新加载配置文件"  ,消息总线客户端从
 * RabbitMQ中接收到消息后,会访问Spring Cloud Config 配置中心服务器,加载Git仓库中的配置文件
 *
 * 我们利用Git中的webhook机制, 当Git中的配置文件修改后,Git会自动访问webhook中存储的网址
 * 我们将该网址写为(127.0.0.1:12000(消息总线服务端地址)/actuator/bus-refresh) ,它将会访问
 * 该地址,从而达到我们想要重新加载配置文件的目的
 *
 */
@SpringBootApplication
@EnableConfigServer  //开启配置中心
public class ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class);
    }
}
